<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>await的原理</title>
</head>
<body>
	<!-- 
			await的原理：
         1.表面上不出现任何的回调函数
         2.但实际上我们写的代码被JS引擎进行了加工，把回调函数“还原”回来了。
         3.最终运行的代码是依然有回调的。
	 -->

	<script type="text/javascript" >

		const p1 = new Promise((resolve,reject)=>{
			setTimeout(()=>{
				resolve('hello')
			},1000)
		})
		const p2 = new Promise((resolve,reject)=>{
			setTimeout(()=>{
				resolve('hello')
			},2000)
		})

		;(async function(){
			// const r1 = await p1
			// const r2 = await p2
			// console.log('p1成功了',r1,r2)
		})()

		;(function(){
			p1.then(
				r1 =>{
					p2.then(
						r2 => {
							console.log('p1成功了',r1,r2)
						}
					)
				}
			)
		})()

		/* ******************************************** */
		async function demo(){
			const result1 = await sendAjax({url:'https://api.apiopen.top/getJoke'})
			console.log('第1次请求成功了',result2)
			const result2 = await sendAjax({url:'https://api.apiopen.top/getJoke'})
			console.log('第2次请求成功了',result2)
			const result3 = await sendAjax({url:'https://api.apiopen.top/getJoke'})
			console.log('第3次请求成功了',result3)
		}

		function demo(){
			sendAjax({url:'https://api.apiopen.top/getJoke'}).then(
				result1 => {
					console.log('第1次请求成功了',result1)
					sendAjax({url:'https://api.apiopen.top/getJoke'}).then(
						result2 =>{
							console.log('第2次请求成功了',result2)
							sendAjax({url:'https://api.apiopen.top/getJoke'}).then(
								result3 =>{console.log('第3次请求成功了',result3)}
							)
						}
					)
				}
			)
		}


	</script>
</body>
</html>